// pages/my/my.js
Page({

	/**
	 * 页面的初始数据
	 */
	data: {
		articleList: [],
		nickName: "",
		openId: "",
		avatarUrl: "",
		//首页图片-地址
		files: [],
		//旧图片地址(云端的) 如果要发布新的首页图片,就把云端旧的地址删除
		oldFile: "",
		//首页文本域-内容
		content: "",
		//是否可以发布首页信息
		btnflag1: true,
		//是否显示加载中
		isLoading: false
	},

	/**
	 * 生命周期函数--监听页面加载
	 */
	onLoad: function(options) {
		var global = getApp()
		//获取用户信息
		this.setData({
			// nickName: global.nickName,
			// avatarUrl: global.avatarUrl,
			openId: global.openId
		}, function() {
			// console.log(this.data)
		})
		
		//云端获取 首页配置信息
		this.loadHomeInfo()
		// 云端获取文章信息
		this.loadArticle(this)

	},

	/**
	 * 生命周期函数--监听页面初次渲染完成
	 */
	onReady: function() {

	},

	/**
	 * 生命周期函数--监听页面显示
	 */
	onShow: function() {
		//当前页面不允许分享转发
		wx.hideShareMenu()
		
		var global = getApp()
		//页面显示时,获取 是否需要重新 加载数据
		if(global.adminRefresh){//需要重新加载数据
			global.adminRefresh = false;
			this.loadArticle(this)
		}
		
	},

	/**
	 * 生命周期函数--监听页面隐藏
	 */
	onHide: function() {

	},

	/**
	 * 生命周期函数--监听页面卸载
	 */
	onUnload: function() {

	},

	/**
	 * 页面相关事件处理函数--监听用户下拉动作
	 */
	onPullDownRefresh: function() {

	},

	/**
	 * 页面上拉触底事件的处理函数
	 */
	onReachBottom: function() {
		this.loadMore()
	},

	/**
	 * 用户点击右上角分享
	 */
	onShareAppMessage: function() {

	},
	
	//点击 跳转到 新文章
	addNewArticle: function(evt){
		wx.navigateTo({
		  url: '../article_new/article_new'
		})
	},
	
	//编辑文章
	edit: function(evt){
		// console.log('编辑')
		//获取文章 云端id
		// console.log(evt.currentTarget.dataset.id)
		var cloudId = evt.currentTarget.dataset.id
		wx.navigateTo({
		  url: '../article_edit/article_edit?id=' + cloudId
		})
	},
	//删除文章
	del: function(evt){
		var _this = this
		//确认删除对话框
		wx.showModal({
		  title: '确认要删除吗?',
		  content: '该操作不可逆,谨慎处理!',
		  success (res) {
		    if (res.confirm) {
		      // console.log('用户点击确定')
					wx.showToast({
						title: "删除中",
						icon: "loading"
					})
					//计数器
					var count = 2
					// 获取当前文章 index
					var index = evt.currentTarget.dataset.index
					// console.log(index)
					// articleList
					// 1.删除集合
					const db = wx.cloud.database()
					console.log(_this.data.articleList[index]._id)
					wx.cloud.callFunction({
						name: "delete",
						data: {
							_id: _this.data.articleList[index]._id
						},
						success: res=>{
							console.log("删除集合:", res)
							count --
							if(count==0){//异步删除 都执行完时 重新刷新文章
								_this.loadArticle(_this, function(){
									wx.showToast({
										title: "成功"
									})
								})
							}
						},
						fail: res=>{
							console.log(res)
						}
					})
					
					// db.collection('article').doc(_this.data.articleList[index]._id).remove({
					//   success: function(res) {
					//     console.log("删除集合:", res)
					// 		count --
					// 		if(count==0){//异步删除 都执行完时 重新刷新文章
					// 			_this.loadArticle(_this, function(){
					// 				wx.showToast({
					// 					title: "成功"
					// 				})
					// 			})
					// 		}
					//   },
					// 	fail: function(res){
					// 		console.log(res)
					// 	}
					// })
					
					
					// 2.删除文件
					wx.cloud.deleteFile({
						//要删除 文件云id 的集合
					  fileList: _this.data.articleList[index].images
					}).then(res => {
					  // handle success
						console.log("删除文件", res)
						count --
						if(count==0){//异步删除 都执行完时 重新刷新文章
							_this.loadArticle(_this, function(){
								wx.showToast({
									title: "成功"
								})
							})
						}
					}).catch(error => {
					  // handle error
					})
					
		    } else if (res.cancel) {
		      // console.log('用户点击取消')
		    }
		  },
			fail(res) {
				console.log(res)
			}
			
		})
		
	},
	
	//从云端读取文章列表
	loadArticle: function(_this, cb){
		// 传进来的回调函数
		var callback = cb;
		// 1. 获取数据库引用
		const db = wx.cloud.database()
		//设置 _ 命令
		const _ = db.command
		// 2. 构造查询语句
		// collection 方法获取一个集合的引用
		// where 方法传入一个对象，数据库返回集合中字段等于指定值的 JSON 文档。API 也支持高级的查询条件（比如大于、小于、in 等），具体见文档查看支持列表
		// get 方法会触发网络请求，往数据库取数据[]
		// ==查不到数据==检查云端集合权限,检查权限,检查权限==
		// ==查不到数据==检查云端集合权限,检查权限,检查权限==
		db.collection('article')
			//asc低到高 desc高到低
			//编辑时间 从近到远
			.orderBy('time_edit', 'desc')
			// .skip(10) // 跳过结果集中的前 10 条，从第 11 条开始返回
			.limit(10) // 限制返回数量为 xx 条
			.get()
			.then(res => {
				// console.log(res.data)
				var tempData = [].concat(res.data);
				if (res.data) {
					//有数据
					//设置当前的 文章数据
					_this.setData({articleList: [].concat(tempData)})
					//执行回调函数
					if(callback){
						callback();
					}
				}
			})
			.catch(err => {
				console.error(err)
			})
	},

// 加载更多文章
	loadMore: function(){
		var _this = this
		//显示加载中
		_this.setData({isLoading: true})
		//获取当前有多少条数据
		var total = _this.data.articleList.length
		// 1. 获取数据库引用
		const db = wx.cloud.database()
		// 2. 构造查询语句
		db.collection('article')
			//asc低到高 desc高到低
			//编辑时间 从近到远
			.orderBy('time_edit', 'desc')
			.skip(total) // 跳过结果集中的前 10 条，从第 11 条开始返回
			.limit(10) // 限制返回数量为 xx 条
			.get()
			.then(res => {
				console.log(res.data)
				if (res.data) {
					//有数据
					_this.setData({articleList: this.data.articleList.concat(res.data)})
					_this.setData({isLoading: false})
				}else{
					//没有数据了 (所有文章加载完了)
					_this.setData({isLoading: false})
				}
			})
			.catch(err => {
				console.log(err)
			})
	},

	//图片上传组件-图片删除
	imgDelete: function(evt){
		// evt.target.dataset.index
		//删除
		var temp = this.data.files
		temp.splice(evt.target.dataset.index, 1)
		this.setData({files: [].concat(temp)})
		// console.log(this.data.files)
	},
	
	chooseImage: function(e) {
		var that = this;
		wx.chooseImage({
			count: 1,
			sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图，默认二者都有
			sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机，默认二者都有
			success: function(res) {
				// 返回选定照片的本地文件路径列表，tempFilePath可以作为img标签的src属性显示图片
				that.setData({
					files: [].concat(res.tempFilePaths)
				});
			}
		})
	},
	
	previewImage: function(e) {
		//在新页面中全屏预览图片。预览的过程中用户可以进行保存图片、发送给朋友等操作
		// console.log(e)
		wx.previewImage({
			current: e.currentTarget.id, // 当前显示图片的http链接
			urls: this.data.files // 需要预览的图片http链接列表
		})
	},
	
	//实时获取文本框内容
	contentGet: function(e){
		// console.log(e.detail.value)
		this.setData({content: e.detail.value})
	},
	
	//设置首页内容
	setHomeInfo: function(e){
		var _this = this
		if(this.data.files.length>0){
			_this.setData({btnflag1: false})
			wx.showToast({
				icon: "loading",
				title: "发布中"
			})
			
			if(this.data.files[0].search("cloud://") == -1){
				console.log("image不是cloud文件,需要上传")
				//切割字符串
				var templist = _this.data.files[0].split(".")
				//获取后缀名
				var imgType = "." + templist[templist.length-1]
				//重新以时间戳命名文件名称
				var newName = (new Date()).getTime() + "_" + imgType
				// console.log(newName)
				//上传图片到云端
				wx.cloud.uploadFile({
				  cloudPath: "home-image/" + newName,
				  filePath: _this.data.files[0], // 文件路径
				  success: res1 => {
						console.log(res1.fileID)
						const db = wx.cloud.database()
						// 首页信息配置到云端
						wx.cloud.callFunction({
							name: "setHomeInfo",
							data: {
								"image": res1.fileID,
								"content": _this.data.content
							},
							success: res=>{
								console.log(res)
								_this.setData({btnflag1: true})
								wx.showToast({
									icon: "success",
									title: "发布完成"
								})
								// 异步从云端删除旧的首页图片
								// 删除文件
								wx.cloud.deleteFile({
									//要删除 文件云id 的集合
								  fileList: [].concat(_this.data.oldFile)
								}).then(res => {
								  // handle success
									console.log("删除旧首页图片--成功", res)
								}).catch(error => {
								  // handle error
									console.log(error)
								})
								
							},
							fail: err=>{console.log(err)}
						})
						
					},
					fail: err => {console.log(err)}
				})
				
			}else{
				console.log("image是cloud文件,不需要上传")
				const db = wx.cloud.database()
				// 首页信息配置到云端
				wx.cloud.callFunction({
					name: "setHomeInfo",
					data: {
						"content": _this.data.content
					},
					success: res=>{
						console.log(res)
						_this.setData({btnflag1: true})
						wx.showToast({
							icon: "success",
							title: "发布完成"
						})
					},
					fail: err=>{console.log(err)}
				})
				
			}
			
		}else{
			wx.showToast({
				title: "必须选择一张图片",
				icon: "none"
			})
		}
		
	},
	
	//云端获取首页信息
	loadHomeInfo: function(){
		var _this = this
		//云端获取首页信息
		const db = wx.cloud.database()
		db.collection("homeInfo").doc("info").get({
			success: res=>{
				console.log(res.data)
				_this.setData({
					files: [].concat(res.data.image),
					oldFile: res.data.image,
					content: res.data.content
				})
			},
			fail: res=>{
				console.log(res)
			}
		})
	}

})
